package woaini.fenger.bots.opq.dto;

import java.io.Serializable;
import java.util.List;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * OPQ请求
 *
 * @see woaini.fenger.bots.opq.dto.OpqRequest
 * @author yefeng {@code @Date} 2023-05-16 16:50:39
 */
@NoArgsConstructor
@Data
public class OpqRequest implements Serializable {

  /**
   * @see String CGI命令
   */
  @JSONField(name = "CgiCmd")
  private String CgiCmd;

  /**
   * @see CgiRequest CGI请求
   */
  @JSONField(name = "CgiRequest")
  private CgiRequest CgiRequest;

  @NoArgsConstructor
  @Data
  public static class CgiRequest implements Serializable {
    /**
     * @see Integer 要执行以下操作
     */
    @JSONField(name = "ToUin")
    private Long ToUin;

    /**
     * @see Integer 打字
     */
    @JSONField(name = "ToType")
    private Integer ToType;

    /**
     * @see String 内容
     */
    @JSONField(name = "Content")
    private String Content;

    /**
     * @see Voice 声音
     */
    @JSONField(name = "Voice")
    private Voice Voice;

    /**
     * @see List<AtUinLists> 在UIN列表中
     */
    @JSONField(name = "AtUinList")
    private List<AtUinLists> AtUinLists;

    /**
     * @see List<Images> 图像
     */
    @JSONField(name = "Images")
    private List<Images> Images;

    @NoArgsConstructor
    @Data
    public static class Voice implements Serializable {
      /**
       * @see String 文件MD5文件MD5
       */
      @JSONField(name = "FileMd5")
      private String FileMd5;

      /**
       * @see Integer 文件大小
       */
      @JSONField(name = "FileSize")
      private Integer FileSize;

      /**
       * @see String 令牌文件文件
       */
      @JSONField(name = "FileToken")
      private String FileToken;
    }

    @NoArgsConstructor
    @Data
    public static class AtUinLists implements Serializable {
      /**
       * @see Long UIN
       */
      @JSONField(name = "Uin")
      private Long Uin;
    }

    @NoArgsConstructor
    @Data
    public static class Images implements Serializable {
      /**
       * @see Long 文件ID文件ID
       */
      @JSONField(name = "FileId")
      private Long FileId;

      /**
       * @see String 文件MD5文件MD5
       */
      @JSONField(name = "FileMd5")
      private String FileMd5;

      /**
       * @see Integer 文件大小
       */
      @JSONField(name = "FileSize")
      private Integer FileSize;
    }
  }
}
